package com.annotationAndReflection;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

//自定义注解
public class TestcustomAnnotation {
    ////由于MyAnnotation2中,定义了参数,必须有参数,否则报错若存在默认值,则参数可以不必写
    @MyAnnotation2(name = "void",schools = {"zufe"})
    public void test(){ }
    @MyAnnotation3("void")
    public void test2(){}


}
@Target({ElementType.TYPE,ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@interface MyAnnotation2{
    //注解的参数:参数类型+参数名(),可以添加默认值; 注意虽然+了(),但不是方法
    String name() default "";
    int age() default 0;
    int id() default  -1;//如果默认值为-1,代表不存在

    String[] schools() default {""};
}
@Target({ElementType.TYPE,ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@interface MyAnnotation3{
    String value();//如果只有一个参数,那么建议使用value,这样在使用时可以省略(value是默认值)
}